package io.gitee.xyuesheng.day02;

import org.junit.Test;

import java.util.Arrays;

public class DemoMethodArgs {
    @Test
    public void testArgs() {
        // 基本类型的实际参数，它的值不能被方法改变
        // 局部变量

        // 栈：存方法的局部变量、形式参数
        int i = 10;

        change(i);

        System.out.println(i);
    }

    // 基本类型的参数，按值传递
    public void change(int i) {
        i = 15;

        System.out.println(i);
    }

    // 引用类型
    @Test
    public void testArray() {
        int[] array = {1, 2, 3};

        // change(array);
        change2(array);

        // array = new int[] {2, 3, 4};


        System.out.println(Arrays.toString(array));
    }

    public void change(int[] array) {
        array[0] = 4;

        System.out.println(Arrays.toString(array));
    }

    public void change2(int[] array) {
        System.out.println(Arrays.toString(array));
        // int[] a = {1, 2, 3};
        // int[] a2 = new int[] {1, 2, 3};

        int[] array1;
        array1 = new int[]{4, 2, 3};

        array = array1;


        System.out.println(Arrays.toString(array));
    }

    // java内存结构
    public void testMemory() {
        int i = 1;

        // int[] array = {1, 2, 3};
        int[] array = new int[]{1, 2, 3};
        int[] array2 = array;

        array = new int[]{2, 3, 4};
    }
}
